package com.sxf.redis.iredis;

import java.util.Objects;

/**
 * 
 * @description: 超时时间设置
 * @author: zhangyb@ccccit.com.cn 
 * @date: 2021年1月5日 上午11:53:21
 */
public interface IExpireRedisUtils {
	
	/**
	 * 设置超时时间
	 * @param nameSpace
	 * @param key
	 * @param timeoutSeconds
	 * @return 设置结果true成功 false失败
	 */
	Boolean expire(String nameSpace, String key, long timeoutSeconds);

	/**
	 * 设置超时时间
	 * @param key
	 * @param timeoutSeconds
	 * @return
	 */
	default Boolean expire(String key, long timeoutSeconds) {
		return expire(null, key, timeoutSeconds);
	}

	/**
	 * 获取当前超时时间
	 * @param nameSpace
	 * @param key
	 * @return 单位毫秒
	 */
	Long getExpire(String nameSpace, String key);

	/**
	 * 获取当前超时时间
	 * @param key
	 * @return
	 */
	default Long getExpire(String key) {
		return getExpire(null, key);
	}
	
	/**
	 * 获取当前超时时间
	 * @param nameSpace
	 * @param key
	 * @return 单位秒
	 */
	default Long getExpireSeconds(String nameSpace, String key) {
		Long expiremillisecond = getExpire(nameSpace, key);
		if(Objects.isNull(expiremillisecond)) {
			return expiremillisecond;
		}
		return expiremillisecond/1000;
	}
	
	/**
	 * 获取当前超时时间
	 * @param key
	 * @return
	 */
	default Long getExpireSeconds(String key) {
		Long expiremillisecond = getExpire(null, key);
		if(Objects.isNull(expiremillisecond)) {
			return expiremillisecond;
		}
		return expiremillisecond/1000;
	}
}
